#include "tril_n_d.h"

using namespace Tril;

extern "C" __global__ __aicore__ void tril(GM_ADDR x, GM_ADDR y, GM_ADDR workspace, GM_ADDR tiling) {
    GET_TILING_DATA(tilingData, tiling);
    if (TILING_KEY_IS(101)) {
        TrilND<DTYPE_X> op;
        op.Init(x, y, &tilingData);
        op.ProcessOneGroup();
    } else if (TILING_KEY_IS(102)) {
        TrilND<DTYPE_X> op;
        op.Init(x, y, &tilingData);
        op.ProcessOneGroup<false>();
    } else if (TILING_KEY_IS(201)) {
        TrilND<DTYPE_X> op;
        op.Init(x, y, &tilingData);
        op.ProcessMultiGroup();
    } else if (TILING_KEY_IS(202)) {
        TrilND<DTYPE_X> op;
        op.Init(x, y, &tilingData);
        op.ProcessMultiGroup<false>();
    }
}